package com.vis.wz.demo.pdf;

import com.alibaba.fastjson2.JSON;
import com.vis.wz.demo.pdf.util.SystemKit;
import org.dromara.pdf.pdfbox.core.base.Document;
import org.dromara.pdf.pdfbox.core.base.Page;
import org.dromara.pdf.pdfbox.core.component.Textarea;
import org.dromara.pdf.pdfbox.core.ext.templater.FreemarkerTemplater;
import org.dromara.pdf.pdfbox.handler.PdfHandler;

import java.util.HashMap;
import java.util.Map;

//@SpringBootApplication
public class Application {
    private static String savePath;

    public static void main(String[] args) {
        if (SystemKit.isWin()) {
            savePath = "C:\\Users\\Administrator\\Desktop\\" + System.currentTimeMillis() + ".pdf";
        } else {
            savePath = "/opt/pdf/" + System.currentTimeMillis() + ".pdf";
        }

        //创建文档式的pdf
        //createPdfDocument();

        //创建模版--式的pdf
        createPdfTemplate();
    }

    public static void createPdfTemplate() {
        // 定义数据字典
        Map<String, Object> data = new HashMap<>();
        // 添加数据
        data.put("title", "自定义Html模版，生成pdf");
        // 获取模板引擎
        FreemarkerTemplater templater = PdfHandler.getDocumentTemplater().getFreemarkerTemplater();
        // 设置模板目录
        templater.setTemplatePath("template");
        // 设置模板名称
        templater.setTemplateName("template.html");
        // 设置模板数据
        templater.setTemplateData(data);
        // 转换文档
        Document document = templater.transform();

        // 保存文档&&关闭文档
        document.saveAndClose(savePath);

    }

    public static void createPdfDocument() {
        // 创建文档
        Document document = PdfHandler.getDocumentHandler().create();

        // 创建页面
        Page page = new Page(document);

        // 创建文本
        Textarea textarea = new Textarea(page);
        // 设置文本内容
        textarea.setText("PDF生成");
        // 渲染
        textarea.render();

        // 添加页面
        document.appendPage(page);
        System.out.println(JSON.toJSONString(System.getProperties()));
        System.out.println();

        // 保存文档&&关闭文档
        document.saveAndClose(savePath);

    }
}
